home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 26 / Cream of the Crop 26.iso / bbs / lord2b7.zip / REFHELP.DOC < prev    next >
Text File  |  1997-06-05  |  27KB  |  671 lines

  1.  
  2.         *******  HOW TO MAKE YOUR OWN REF FILES FOR LORD II *******
  3.  
  4.                         For LORD II:New World V1.00
  5.                       (and I'm sorry these docs suck!)
  6.  
  7. Check 3rdparty.doc for more info.
  8.  
  9. The heart of this system is the .REF format.  It is a script language that
  10. can be used to do complex gaming things, like math and getting random
  11. numbers, adding and deleting other varibles in the game - nearly
  12. everything a simple basic could do.
  13.  
  14. REF is short for - Relay Execution File?  Reference File?  Who cares!
  15.  
  16. Although tricky at first, making a ref file is really pretty simple.  If
  17. something doesn't work, just go look at your .REF file, (a simple text
  18. file) and fix it!  The .ref language will tell you at runtime about
  19. words it doesn't understand or syntax errors.
  20.  
  21.  To see a demonstration of most commands, edit LORD II's .ref files.
  22.  
  23.  *  If a command isn't understood, it will tell you upon execution
  24.  *  .REF size is limited by conventional memory
  25.  *  REF files are completely loaded, and interpreted BEFORE execution for
  26.     speed
  27.  *  Allows BEGIN and END statements, thousands of levels deep
  28.  *  Ansi and SethAnsi (Sorry, don't have another name yet, <G> ) are
  29.     automatically displayed correctly locally and remotely
  30.  *  They can save and write their own data
  31.  
  32.                   ** Varibles the REF's use: **
  33.  
  34.  
  35. LOCAL : Will equal 5 if the ref is being viewed locally, otherwise 0.
  36. RESPONSE (or RESPONCE) : What @CHOICE returned.
  37.  
  38.     NOTE:  If the following are found in a string being displayed they
  39.            will be replaces with their values:
  40.  
  41. `V01 through `V40 These are the 40 GLOBAL longint varibles. (for numbers)
  42. `S01 through `S10 These are 10 GLOBAL string varibles. (for text)
  43. `P01 through `P99 These are the 99 player longint varibles. (for numbers)
  44. `T01 through `T99 these are 99 player byte varibles.  (255 max)
  45. `I01 through `I99 these are the 99 player integer item varibles. 32000 max)
  46. `+01 through `+99 - Same as above, but shows the item NAME, not amount.
  47.  
  48. `v05 and `p11 are reserved if you wish to use LORD2's 'limited movements'.
  49.  
  50. x  (players x cordinates)
  51. y  (players y cordinates)
  52. map (players current block #)
  53. dead (1 is player is dead)
  54. sexmale (1 if player is male)
  55. narm (current armour #)
  56. nwep (current weapon #)
  57. money (players moola)
  58. bank (moola in bank)
  59. enemy (so you can change the enemy name in the #die file, can't remember
  60.        why I wanted this but...)
  61.  
  62. ALL The above can also be changed. Examples:
  63.  
  64. @do x is 20   <-sets X to 20
  65. @do `i05 is 90  <- Gives dude 90 item 5's (item is defined in l2cfg.exe)
  66.  
  67. These are symbols that will be translated automatically when using
  68. @show or @do write.  You can also make variables equal these, etc. Simular
  69. to Renegades MCI codes.
  70.  
  71. `N this is the users name.
  72. `E Enemy name.
  73. `G Current Graphics Level.
  74. `X Adds a space.
  75. `D Sends a #8 (delete).
  76. `0 through `9 and `! through `^ change color.
  77. `W One tenth a second wait.
  78. `L About a half second wait.
  79. `\ Simulates a carriage return.
  80. `r0 through `r7, change background color.
  81. `c Clears the screen and simulates 2 carriage returns.
  82.  
  83. &realname | Real name as passed by the drop file
  84. &date | The date and time like 12/12/97 format.
  85. &nicedate | Time AND date like 5:19 on 12/12.
  86. s&armour | equipped armour name.
  87. s&arm_num | equipped armour's defensive value
  88. s&weapon | equipped weapon name.
  89. s&wep_num | equipped weapon's attack value.
  90. s&son | son/daughter, depending on current users sex
  91. s&boy | boy/girl, depending on current users sex
  92. s&man | man/lady, depending on current users sex
  93. s&sir | sir/ma'am, depending on current users sex
  94. s&him | him/her, depending on current users sex
  95. s&his | his/her, depending on current users sex
  96. &money | current users gold
  97. &bank | current users gold in bank
  98. &lastx | users x position before last move.
  99. &lasty | users y position before last move - helpfull to determine which
  100.          direction they came from before the hit the ref, etc.
  101. &map | current map #
  102. &time | Current age of the game in days.
  103. &timeleft | Minutes the user has left in the door.
  104. &sex | returns 0 if player is female, 1 if player is male
  105. &playernum | The account # of the current player.
  106. &totalaccounts | How many player accounts exist. Includes accounts marked
  107.                  deleted.
  108. (NOTE: Vars starting with s& usually means if you can control the case
  109. of the first letter of the outpout by the case of the first s - so
  110. S&sir would return "Sir" and s&sir would return "sir")
  111.  
  112. (NOTE: These waits are the SAME on all computers, goes by the clock)
  113.  
  114. ***************** COMMAND LIST, A GOOD THING TO PRINT! *******************
  115.  
  116.  The newest ones are listed first.. I'll do those in lowercase, that upper
  117.  case is hard on the eyes kinda.
  118.  
  119. @drawpart <x> <y>: this will draw one char of a map screen with whatever
  120.                   it should be.  (including if people are there)
  121. @progname : The line UNDER this will be the status bar name of the game
  122. @moremap : The line UNDER this will be the new <more> prompt.
  123. @drawmap : This draws the current map the user is on.
  124. @update : Draws all the people on the screen.
  125. @update_update : Writes current player data to UPDATE.TMP file.  (if you
  126.                  can't wait until they are out of the ref file for some
  127.                  reason)
  128. @itemexit : Tells the item editor to automatically return the player to the
  129.             map screen after the item is used.  It is up to you to use the
  130.             @drawmap and @update commands as usual though.
  131. @busy : Makes the player appear 'red' to other players currently playing.
  132. @offmap : Makes the player appear to disappear to other players currently
  133.           playing.  (so it looks like they actually went into the hut)
  134. @pauseoff : You can show long ansis etc and it won't do its usuall every
  135.             24 line pause.
  136. @pauseon : Turns pause back on.
  137.  
  138. @do `v01 is 1 : Sets the default option on the next lightbar selection,
  139.              ALWAYS use before a @choice command.
  140. @moveback : Use this to move the player back to where he moved from - good
  141.             for when they push against a treasure chest or such, and you
  142.             don't want them to appear inside of it when they are done.
  143. @do addlog : The line UNDER this command is added to the 'lognow.txt' file.
  144. @loadworld : Loads globals and world data - has never been used, but is
  145.              included just in case.
  146. @saveworld : Saves stats and world data - only use yet is in right after
  147.              @#maint is called to save random stats set for that day and
  148.              such.
  149. @loadmap <map #> : Very handy - Lets you change someones map location in
  150.                    a ref file.  This is the 'block #' not the physical map
  151.                    location, so it could be 1 to 1600.  (make sure it exist
  152.                    in l2cfg.exe though) Be SURE to change the map variable
  153.                    too!!  Using this and changing the X and Y
  154.                    cords effectivly lets you do a 'warp' from a .ref file.
  155.  
  156. @statbar | Draws the statbar.
  157. @clearblock <start y> <end y> | Clears lines quick - @clear block 20 24 would
  158.                                 clear 4 lines starting at 20
  159.  
  160. @bitset <`t01 to `t99> <bit> <0 or 1> | Sets a certain bit in a byte var, lets
  161. you have 8 yes/no vars in one `t byte var! Examp: @bitset `t12 1 1 (this
  162. turns bit 1 in `t12 to ON) (bits can be from 0 to 7)
  163.  
  164. Now of course you'll want to check sometimes to see if a bit is yes or no...
  165.  
  166. @if bitcheck `t12 1 1 then do
  167.   @begin
  168.   @show
  169.   Yeah!  Bit 1 of t12 is TRUE!!! Yay.
  170.   @end
  171.  
  172. It works like a standard @IF after the 'then' part.
  173.  
  174. ALSO:  Check the CHOICE command, you can check a bit there too, like this:
  175. +`t12 1 Hey, byte 12 bit 1 is TRUE!
  176.  
  177. Use '-' for false.
  178.  
  179. @quebar
  180. <message>
  181.  
  182. The above will add a message to the saybar que - This means if the game
  183. is currently displaying a message, or has a few to display, it will wait
  184. until the proper time.
  185.  
  186. @saybar
  187. <message>
  188.  
  189. The above is like quebar, except it displays the message instantly,
  190. without taking into consideration that a message might have just been
  191. displayed and this will write over it.
  192.  
  193. @chooseplayer `p20 | Will prompt user for another players name - its the
  194.                       standard 'full or partial name' thing, with a 'you mean
  195.                       this guy?'.  It returns the players # or 0 if none.
  196.  
  197. -=-=-= Stuff to get info from OTHER players in the game, assuming you
  198.        know their player #...
  199.  
  200. @do `s01 is getname 8 | Would get the name of player 8 and put it in `s01.
  201.                      (only works with `s vars)
  202. @do `p20 is deleted 8 | Puts 1 (yes) or 0 (no) in `p20.
  203.                      (only works with `p vars)
  204.  
  205. @DO GOTO <header or LABEL name>
  206. @NOCHECK : This makes it not scan for labels/headers before running it.
  207. @ROUTINE <Header or label name> IN <Filename of .REF file> (only one parm is
  208.           given, it assumes it is in the current .ref)
  209. @ROUTINEABORT : Stops it from returning.
  210. @RUN <Header or label name> IN <Filename of .REF file>
  211. @CHOICE
  212. @VERSION  <Version it needs>
  213. @SHOW  : Shows following text/ansi.  Stops when a @ is hit on
  214. @SHOW SCROLL : Same thing, but puts all the text in a nifty scroll window
  215. @REPLACE <this> <that> <in this> : Replaces this with that in an `s var.
  216. @REPLACEALL <this> <that> <in this> : Same as above but replaces all instances
  217. @DO WRITE
  218. @DO BEEP :  Makes a weird beep noise, locally only
  219. @DISPLAYFILE <filename> <options> : This display an entire file.  Possible
  220.                                 options are:  NOPAUSE and NOSKIP.
  221. @DISPLAY <this> IN <this file> <options> : This is used to display a certain
  222. part of a file, compatible with the LORDTXT.DAT format.
  223. @IF <Varible> <Math> <Varible> (Math can be MORE, LESS, NOT, IS)
  224. @GRAPHICS IS <Num> :  3 or more enable remote ANSI.  If you never wanted
  225. @CLOSESCRIPT : This ends the script.
  226. @CLEAR SCREEN: Clears entire screen.
  227. @KEY : Does a [MORE] prompt, centered on current line.
  228. @KEY NODISPLAY : Waits for keypress without saying anything.
  229. @DO <Var To Change> <How To Change It> <Change With What>
  230. Ways to change it:(-,+,/,*,IS)
  231. @DO <Varible to put # in> RANDOM <Highest random number> <number added to it>
  232. @DO MOVE <X> <Y> : This moves the curser.  (like GOTOXY in TP) Enter 0 for
  233. @DO GETCHAR <String var to put it in> Grabs a keypress, with timeslicing.
  234. @DO READSPECIAL <String var to put it in> <legal chars, 1st is default>
  235. @DO GETKEY <String var to put it in> : This command is usefull, *IF* a key
  236. @DO READNUM <MAX LENGTH> (Optional: <FOREGROUND COLOR> <BACKGROUND COLOR>
  237. <DEFAULT>: The number is put into `V40.
  238. @DO READSTRING <MAX LENGTH> <DEFAULT> <VAR TO PUT IT IN> : Get a string.
  239. @DO STRIPBAD: Strips out illegal ` codes, and replaces badwords with
  240.               the standard badword.dat file.
  241. @DO STRIPALL: Strips out all ` codes.  Good for passwords, etc.
  242. @DO COPY TO NAME  Put whatever is in `S10 into `N.  (name)
  243. @IF <Word or var> INSIDE <Word or var> THEN (ect) :  Allows you to search
  244. a string for something inside of it.  Not case sensitive.
  245. @DO STRIP <string var> : This strips beginning and end spaces of a string.
  246. @DO UPCASE <string var> : Makes a string all capitals.
  247. @DO <num var> IS LENGTH <String var>  : Gets length, smart way.
  248. @DO <num var> IS REALLENGTH <String var>  : Gets length dumb way. (includes
  249. @DO PAD <string var> <length> :  Adds spaces to end until string is as long
  250.                                  as <length>.
  251. @IF <name of file> EXISTS TRUE THEN (..ect..)
  252. @IF <name of file> EXISTS FALSE THEN (..ect..)
  253. @WRITEFILE <file name>
  254. <Thing to write>
  255. <Thing to write>
  256. <ect until next @ at beginning of string is hit>
  257. @READFILE <file name>
  258. <Var to read into>
  259. <Var to read into>
  260. <Ect until next @ at beginning of string is hit>
  261. @DO DELETE <file name>  : Delete a file.
  262. @COPYFILE <input filename> <output filename> : Copies a file.  Not that
  263. hard to use, really.          
  264. @CONVERT_FILE_TO_ANSI <input file> <output file> : Converts a text file
  265. of Sethansi (whatever) to regular ansi.  Good for a final score output.
  266. @CONVERT_FILE_TO_ASCII <input file> <output file> : Converts a text file
  267. of Sethansi (whatever) to regular ascii, ie, no colors at all.
  268. @DO TRIM <file name> <number to trim to> :  Trims text file
  269. @HALT <error level> : Quits and returns correct error level.
  270. @SHELL <.EXE, BAT or COM> <Parms, up to 8> (note, use `* for node num)
  271. @DECLARE <Label/header name> <offset in decimal format>
  272.  
  273. ************** NOW TO GO INTO MORE DETAIL ON EACH COMMAND******************
  274.  
  275.                       ** About headers **
  276.  
  277. Some may be familiar with the way the door LORD keeps track of it's many
  278. ansi's and other display files.  It gives each one a HEADER.  Any header
  279. can be reached with a @DO GOTO <header name> command.
  280.  
  281. Example header:
  282.  
  283. @#START
  284.  
  285.  
  286. This MUST be in a ref file, this is where RTREADER will start.  Anytime
  287. you wish to return to the start, just do a:
  288. @DO GOTO START
  289. command.
  290.  
  291.                       ** Another kind of header **
  292.  
  293. Anytime RTREADER hit's a @#, it knows another section is starting, and
  294. quits.  If you would like to use goto commands INSIDE of a 'section', use
  295. the @LABEL command.  They work like headers, but don't cause a section to
  296. 'quit'.
  297.  
  298. Example:
  299.  
  300. @LABEL LOOP
  301.  
  302. @DO GOTO LOOP
  303.  
  304. You can have as many headers/labels as you want, however, the first 300
  305. 'headers' and 'labels' will be INSTANT access, anything past will not be
  306. quite as quick.
  307.  
  308. This 'speed up' routine runs by default on all .REF files.  (Processes the
  309. labels and headers before running)
  310.  
  311. This takes a noticable pause when doing so, so you may wish to disable this
  312. feature.  Add a
  313.  
  314. @NOCHECK
  315.  
  316. Somewhere near the beginning, it won't check past that point.
  317.  
  318. Also, the Reader is now capable of mapping labels/headers on the fly if it
  319. runs across one that isn't - So the SECOND time you run GOTO it, it's
  320. instantanous.  (this is always active)
  321.  
  322. @DECLARE <Label/header name> <offset in decimal format>
  323.  
  324. This statement allows you to declare a label, and where it is.  Don't
  325. use this unless you know what you are doing - I was thinking I could make
  326. a SPEEDREF.EXE that simply maps out all the headers and makes them all
  327. @DECLARE statements, followed by a @NOCHECK and puts them in the beginning.
  328.  
  329. This would be tricky because every time you add something, the offset
  330. changes...
  331.  
  332.  
  333. NOTE:  Headers like all other commands in RTREADER are *NOT* case
  334.        sensitive.  You can type the whole thing in lowercase, or uppercase
  335.        - or mixed.  It just don't matter man.
  336.  
  337.  
  338.                       ** Basic command list: **
  339.  
  340.  
  341. @GRAPHICS IS <Num> :  3 or more enable remote ANSI.  If you never wanted
  342.                       to send ANSI, you could set this to 1. You will
  343.                       probably never touch this one.
  344.  
  345. @ROUTINE <Header or label name> IN <Filename of .REF file>
  346.  
  347. The @ROUTINE command is usefull - You can use it jump to a completely new
  348. .REF file - when it's finished there, instead of dropping to DOS, it will
  349. load back up the original .REF file and continue where it left off.
  350.  
  351. @RUN <Header or label name> IN <Filename of .REF file>
  352.  
  353. Same thing as above, but doesn't come back to the original .REF.
  354.  
  355. @CHOICE
  356. <A choice>
  357. <another choice>
  358. <ect..When a @ is found in the beginning of a choice it quits>
  359.  
  360. This gives the user a choice.
  361.  
  362. The responce is put into varible RESPONCE.  To set which choice the curser
  363. starts on, put that number into `V01.
  364.  
  365. ** EXAMPLE OF @CHOICE COMMAND **
  366.  
  367. @DO `V01 IS 1 ;which choice should be highlighted when they start
  368.  
  369. (now the choice part)
  370.  
  371. @CHOICE
  372. Yes   <- Defaults to this, since it's 1
  373. No
  374. I don't know
  375. Who cares
  376. @IF RESPONCE IS 3 THEN DO
  377.   @BEGIN
  378.   @DO `P01 IS RESPONCE
  379.   @SHOW
  380.  
  381. You chose `P01!, silly boy!
  382.  
  383.   @END
  384.  
  385. The choice command is more usefull now; you can now define *IF* type
  386. statements so a certain choice will only be there if a conditional statement
  387. is met.
  388.  
  389.  
  390. For instance:
  391.  
  392. @CHOICE
  393. Yes
  394. No
  395. =`p20 500 Hey, I have 500 exactly!
  396. !`p20 500 Hey, I have anything BUT 500 exactly!
  397. >`p20 500 Hey, I have MORE than 500!
  398. <`p20 100 Hey, I have LESS than 100!
  399. >`p20 100 <`p20 500 I have more then 100 and less than 500!
  400.  
  401. Also:  If you are using bitchecking with `t (byte) vars, you can have a if
  402. bit is true or false, like this:
  403.  
  404. +`t12 1 Hey! Byte 12's bit 1 is TRUE! (which is 1)
  405. -`t12 3 Hey! Byte 12's bit 3 is FALSE! (which is 0)
  406.  
  407. The = > and < commands can be stacked as needed.  If `p20 was 600, only
  408. option 2 would be available, and RESPONSE would be 2 after the user hit it.
  409.  
  410. IMPORTANT NOTE:  Never have spaces AFTER lines under a choice command.. This
  411. can make options not show up, etc... still working on why..
  412.  
  413. @VERSION  <Version it needs>  : For instance, you would put
  414.           @VERSION 2 for this version of RTREADER.  (002) If it is run
  415.           on Version 1, (could happen) a window will pop up warning the
  416.           person he had better get the latest version.
  417.  
  418. @SHOW           : Shows following text/ansi.  Stops when a @ is hit on
  419.                   beginning of line.
  420.  
  421. @SHOW SCROLL          : Same thing, but puts all the text in a nifty scroll
  422.                         window. (scroll window has commands line Next Screen,
  423.                         Previous Screen, Start, End and eXtract to file.
  424.                         (that last one is only shown and executed locally)
  425.  
  426. @DO WRITE
  427. <Stuff to write>
  428.  
  429. Same thing as regular @SHOW, but does only one line, without a
  430. line feed.  Used with @DO MOVE this is good for putting prompts,
  431. right in front of READNUM and READSTRING's.
  432.  
  433. NOTE:  You can use Vars mixed with text, ansi and color codes in the
  434. <stuff to write> part.  Works this way with most stuff.
  435.  
  436. @DISPLAYFILE <filename> <options> : This display an entire file.  Possible
  437.                                 options are:  NOPAUSE and NOSKIP.  Put a
  438.                                 space between options if you use both.
  439.  
  440. @IF <Varible> <Math> <Thing the varible must be, or more or less then, or
  441. another varible>  (Possible math functions: EQUALS, MORE, LESS, NOT)
  442.  
  443.  
  444. @CLOSESCRIPT : This ends the script.
  445. @CLEAR SCREEN: Clears entire screen.
  446. @KEY : Does a [MORE] prompt, centered on current line.
  447. @KEY NODISPLAY : Waits for keypress without saying anything.
  448.  
  449. @DO : This statement does a lot - It can be put a the end of a @IF statement
  450.       also.  (Some commands need @DO in front, some don't.  If they do, they
  451.       can be used at the end of an @IF statement, if not, you can't.  (like
  452.       @SHOW)  You would need to use the @BEGIN and @END with the @IF to do
  453.       it conditionally.
  454.  
  455. EXAMPLES OF @DO:
  456.  
  457. Possible DO math symbols are:
  458.  
  459. @DO <Number To Change> <How To Change It> <Change With What>
  460.  
  461. Ways to change it:
  462.  
  463. - <- Take number away
  464. + <- Addition
  465. / <- Division
  466. * <- Multiplication
  467. IS <- Makes same as
  468.  
  469. NOTE:  You can also do this with `S (string vars) but you are limited to
  470. only using IS.  (no math can be done with strings) (See the string section)
  471.  
  472. @IF `V04 MORE 500 THEN DO `V04 - 500
  473. (This would take 500 from `V04 if they had it)
  474. (+ would add money, IS would MAKE it 500)
  475. @IF `V04 MORE 500 THEN DO
  476.  @BEGIN
  477.  @SHOW
  478.  `2You have more then 500!  In fact you have `V04!
  479.  @END
  480.  (if @BEGIN is followed by a @DO it will be executed, otherwise skipped)
  481.  (In @DO WRITE, @SAY and @SHOW (Except SHOW SCROLL) it will print the `V,
  482.   `P and `S varibles - It also understands:
  483.  `N (user name)
  484.  `* (node number)
  485.  
  486. @DO <Varible to put # in> RANDOM <Highest random number> <number to add to it>
  487.  
  488. This is how you generate random numbers.  To generate a number between 500 and
  489. 1000 and put it in varible `P05 you would put:
  490.  
  491. @DO `P05 RANDOM 500 500
  492.  
  493. @DO MOVE <X> <Y> : This moves the curser.  (like GOTOXY in TP) Enter 0 for
  494.                    a number will default to 'current location'.
  495.  
  496.  
  497.                **** STRING AND FILE COMMANDS ****
  498.  
  499. @DO READCHAR <string var to put it in> -Waits for a key to be pressed, uses
  500. DV and windows time slicing while waiting.
  501.  
  502. @DO READSPECIAL (String var to put it in> <legal chars, 1st is default>
  503. Example:
  504.  
  505. @do write
  506. Would you like to kill the monster? Y/N :
  507. @DO READSPECIAL `s01 YN
  508. if `s01 is Y then do
  509.  @begin
  510.  @show
  511. You killed him!
  512.  @end
  513.  
  514. The above would ONLY allow the person to hit Y or N - if he hit ENTER, it
  515. would be the same as hitting Y, because that was listed first.  
  516.  
  517. @DO GETKEY <String var to put it in> : This command is usefull, *IF* a key
  518.                                        IS CURRENTLY being pressed, it puts
  519.                                        that key into the string var.
  520.                                        Otherwise, it puts a '_' in to signal
  521.                                        no key was pressed.
  522.  
  523.                                        Good way to stop a loop.
  524.  
  525. @DO READNUM <MAX LENGTH> (Optional: <FOREGROUND COLOR> <BACKGROUND COLOR>
  526. <DEFAULT>: The number is put into `V40.
  527.  
  528. The READNUM procedure is a very nice string editer to get a number in. It
  529. supports arrow keys and such.
  530.  
  531. @DO READSTRING <MAX LENGTH> <DEFAULT> <VAR TO PUT IT IN> : Get a string.
  532. Uses same string editer as READNUM.
  533.  
  534. Note:  You can only use the `S01 through `S10 vars for READSTRING.  You
  535. can also use these vars for the default.  (or `N)  Use NIL if you want
  536. the default to be nothing.  (if no Var to put it in is specified, it will
  537. be put into `S10 for compatibilty with old .REF's)
  538.  
  539. @DO COPY TO NAME  Put whatever is in `S10 into `N.  (name)
  540.  
  541. To make a string EQUAL something, you would do it like this:
  542. @DO `S04 IS Hello I am
  543. (OR)
  544. @DO `S04 ADD A programmer
  545. (OR)
  546.  
  547. @DO `S04 IS `S02 <- Would copy `S02 to `S04.
  548.  
  549. Note:  There you can only have three spaces per string defination.
  550.        Use the ADD to make a long string.  OR use `X to make spaces, this
  551.        way you can have many spaces in one @DO.
  552.  
  553.  
  554. @IF <Word or var> INSIDE <Word or var> THEN (ect) :  Allows you to search
  555. a string for something inside of it.  Not case sensitive.
  556.  
  557. @DO STRIP <string var> : This strips beginning and end spaces of a string.
  558. @DO UPCASE <string var> : Makes a string all capitals.
  559. @DO <num var> IS LENGTH <String var>  : Gets length, smart way.
  560. @DO <num var> IS REALLENGTH <String var>  : Gets length dumb way. (includes
  561.                                             '`' codes without deciphering
  562.                                             them.)
  563.  
  564.  
  565. @DO PAD <string var> <length> :  Adds spaces to end until string is as long
  566.                                  as <length>.
  567.  
  568. NOTE:  Pad automatically does not include color codes in the length, and DOES
  569.        include varibles in the length.  (like if there was a `s02 inside the
  570.        string)  (my God.. If you were displaying `s01 and it had a `s01 in
  571.                 it, wouldn't it display forever?  I'll have to check that.)
  572.        (note from 3 years later.. still haven't checked into that..maybe
  573.        next year..)
  574.  
  575. @IF <name of file> EXISTS TRUE THEN (..ect..)
  576. @IF <name of file> EXISTS FALSE THEN (..ect..)
  577.  
  578. NOTE:  The above "name of file" can be a var, num or string, or even mixed.
  579.        If if not stated, most commands are capable of this.
  580.  
  581. @WRITEFILE <file name>
  582. <Thing to write>
  583. <Thing to write>
  584. <ect until next @ at beginning of string is hit>
  585.  
  586. <Thing to write> can be a varible, (string or num) or it can be a word you
  587.  write - or a combination of the two.
  588.  
  589. Note:  @WRITEFILE appends the lines if the file exists, otherwise it
  590.        creates it.  File locking techniques are used.
  591.  
  592. @READFILE <file name>
  593. <Var to read into>
  594. <Var to read into>
  595. <Ect until next @ at beginning of string is hit>
  596.  
  597. This works just like @WRITEFILE.  You can use String and Number vars, just
  598. be warned if a number var attempts to read a string, you will always get
  599. 0.
  600.  
  601. NOTE:  @READFILE is a smart procedure - It will not run-time error or
  602.        anything, even if you try to read past the end of the file. It
  603.        simply won't change the vars if the file isn't long enough.
  604.  
  605. @DO DELETE <file name>  : Both delete a file.
  606.  
  607. @DO TRIM <file name> <number to trim to> :  This nifty command makes text
  608.                                             file larger than <number to trim
  609.                                             to> get smaller.  (it deletes
  610.                                             lines from the top until file
  611.                                             is correct # of lines, if smaller
  612.                                             than num, it doesn't change the
  613.                                             file)
  614.  
  615. Note:  On *ALL* of these file commands, you cannot give a path.  A path
  616.        will be put in the beginning, so file commands can only be used in
  617.        the current dir.
  618.  
  619.  
  620.  
  621.                    ****** SPECIAL TALKING COMMANDS ******
  622.  
  623.       These commands are tricky to use, they are used in RTNEWS02.REF,
  624.       (the talking to Seth part) but most people probably don't want to
  625.       hassle with getting the pics in the exact right spot for everything
  626.       to look right.  (it's a New World thing)
  627.  
  628.  
  629. @SAY : All text UNDER this will be put in the 'talk window' until a @ is
  630. hit.
  631. @KEY TOP : Does <MORE> prompt at game text window.
  632. @KEY BOTTOM : Does <MORE> prompt at user text window.
  633. @CLEAR NAME : Deletes the name line of the game window.
  634. @CLEAR USERSCREEN: Clears user text.
  635. @CLEAR TEXT: Clears game text.
  636. @CLEAR PICTURE: Clears pic.
  637. @CLEAR ALL : Clears user text, pic, game text, name and redraws screen.
  638.  
  639.                  ****** THE SHELL COMMAND ******
  640.  
  641. NOTE:  THIS FEATURE DOES NOT WORK IN LORD II AT THIS TIME.
  642.  
  643. A powerful feature of RTREADER is the ability to run OTHER programs inside
  644. of it, and return to the exact spot it left automatically.
  645.  
  646. @SHELL <.EXE, BAT or COM> <Parms, up to 8> (note, use `* for node num)
  647.  
  648. When this happens, two files are created.
  649.  
  650. DO<node num>.BAT is created.  This is actually the file that is run.
  651.  
  652. INFO.<node num> is created.  Simular to LORD's INFO.? system.
  653.  
  654. This text file contains the following:
  655.  
  656. Users first name
  657. Users Last Name
  658. Ref file it was reading before shelling
  659. Offset of ref file (where it was when it shelled)
  660. Graphics <- Passed from drop file, usually between 2 and 5.
  661. Time Left
  662. Com Port
  663. Baud Rate
  664. Lockbaud
  665. FOSSIL (or INTERNAL or DIGI)
  666.  
  667. Note:  The procedure RTREADER uses upon 're-entry' is it reads the proper
  668.        NODE<node num>.DAT file, *THEN* it reads the INFO.? file and fills
  669.        in the gaps.  It does read the Time Left back in also.
  670.  
  671.